Saltar a contenido

📘 Clase 07: Agentes Autónomos y el Ciclo Cognitivo ReAct

  • :material-bookmark: Curso: Curso 3: Creación y Desarrollo de Agentes de IA (CLASE 07)
  • :material-signal-cellular-outline: Nivel: Nivel 3 - Avanzado
  • :material-lightbulb-on: Metáfora Central: «El Detective Privado (Pensar, Actuar, Observar)»
  • :material-laptop: Wisrovi Studio (Local): 🚀 Abrir Reto👨‍🏫 Modo Tutor
  • :material-file-pdf-box: Manual PDF Oficial: Descargar clase-07-agentes-autonomos-react.pdf

Open In Colab Abrir en Studio Local Ver en GitHub


1. 💡 Fundamentación Teórica y Modelo Mental

El paradigma ReAct (Reasoning + Acting) para agentes con autonomía de resolución: 1. Thought (Pensamiento): El agente reflexiona sobre el estado actual y planifica el siguiente paso. 2. Action (Acción): El agente selecciona una herramienta y ejecuta una operación con parámetros. 3. Observation (Observación): El agente recibe el resultado del entorno y decide si continuar o concluir.

🌟 Modelo Mental de la Sesión: «El Detective Privado (Pensar, Actuar, Observar)»

En esta sesión anclamos el aprendizaje en la metáfora del mundo real para visualizar cómo fluyen las estructuras de datos y el flujo de ejecución en la memoria.


2. 🗺️ Arquitectura de Ejecución y Diagrama de Flujo

flowchart TD
    A["🎯 Objetivo del Agente"] --> B["🧠 1. Thought (Razonamiento)"]
    B --> C["🛠️ 2. Action (Ejecución Tool)"]
    C --> D["👀 3. Observation (Resultado Entorno)"]
    D --> E{"¿Objetivo Cumplido?"}
    E -->|No| B
    E -->|Sí| F["🏁 Final Answer al Usuario"]
    style A fill:#1e293b,color:#ffffff,stroke:#3b82f6,stroke-width:2px
    style B fill:#0f766e,color:#ffffff,stroke:#2dd4bf,stroke-width:2px
    style C fill:#d97706,color:#ffffff,stroke:#fbbf24,stroke-width:2px
    style D fill:#1e3a8a,color:#ffffff,stroke:#60a5fa,stroke-width:2px
    style F fill:#059669,color:#ffffff,stroke:#34d399,stroke-width:2px

3. 💻 Código de Implementación Práctica

```python class SimpleReActDemo: def init(self): self.pasos = [] def paso(self, pensamiento, accion, observacion): p = {"thought": pensamiento, "action": accion, "observation": observacion} self.pasos.append(p) return p

agente = SimpleReActDemo() agente.paso("Necesito el clima de Madrid", "get_weather('Madrid')", "Soleado 22C") print("Traza del Agente:", agente.pasos) ```

```python traza = [{"thought": "Calcular 2+2", "action": "calc", "obs": "4"}]

print("Pasos ejecutados:", len(traza)) ```


4. 🛡️ Buenas Prácticas PEP 8: Antipatrones vs Código Pythonic

⚠️ Cuidado con los Antipatrones

while not finished: agent.step()  # ❌ Puede consumir tokens infinitos
for step in range(max_steps):     # ✅ Límite estricto de seguridad

5. 🏋️ Desafío Práctico de la Clase

🎯 Enunciado del Reto

Crea una clase ReActAgent con métodos registrar_paso(self, thought: str, action: str, observation: str) y obtener_traza(self) -> list[dict] que almacene y retorne el historial completo de pasos.

⚡ Resolución Híbrida en 1 Clic (Local + Web)

Si tienes ejecutando wisrovi ui en tu terminal local, puedes 🚀 Abrir este Reto directamente en tu Studio Local (127.0.0.1:8501) para escribir tu código con auto-formateo AST, inspeccionar variables en el Heap/Stack y evaluarlo con pruebas en tiempo real.

class ReActAgent:
def __init__(self):
    self._traza = []

def registrar_paso(self, thought: str, action: str, observation: str):
    # ✍️ Registra el diccionario con thought, action y observation
    self._traza.append({
        "thought": thought,
        "action": action,
        "observation": observation
    })

def obtener_traza(self) -> list[dict]:
    return self._traza
💡 Pista Socrática 1

💡 Pista 1: Inicializa una lista self._traza = [] en __init__.

💡 Pista Socrática 2

💡 Pista 2: En registrar_paso, añade un dict con las tres claves thought, action, observation.

💡 Pista Socrática 3

💡 Pista 3: Retorna self._traza en obtener_traza().

Para resolver este ejercicio en tu entorno: 1. Abre el archivo ejercicios/reto.py de esta clase en Visual Studio Code o utiliza wisrovi ui / wisrovi tutor. 2. Implementa tu solución cumpliendo los requisitos y contratos de tipado. 3. Valida tus resultados ejecutando las pruebas unitarias:

pytest tests/curso_03/test_clase_07_agentes_autonomos_react.py


6. 📚 Fuentes y Bibliografía Recomendada